package com.jbinfo.qingcaowan.user.service;

import com.jbinfo.qingcaowan.base.dto.BaseTimeDTO;
import com.jbinfo.qingcaowan.exam.dto.ExamScoreDTO;
import com.jbinfo.qingcaowan.security.entity.User;
import com.jbinfo.qingcaowan.user.dto.ScoreDetailDTO;
import com.jbinfo.qingcaowan.user.dto.UserDTO;
import com.jbinfo.qingcaowan.wx.WxInfo;

/**
 * 
* @ClassName: UserService 
* @Description: TODO 基础用户服务接口
* @author ZhangLei
* @date 2016年5月24日 上午10:34:52
 */
public interface UserService {
	/**
	 * 
	* @Title: getByCode 
	* @Description: TODO 根据code获取用户信息
	* @author zhanglei  
	* @date 2015年9月24日 下午1:32:17 
	* @param @param userCode
	* @param @return    设定文件 
	* @return UserInfo    返回类型 
	* @throws
	 */
	public User getByCode(String userCode);
	
	// 根据用户名、密码进行验证
	public Object checkUserAndPwd(String username, String password);
	
	// 根据用户Id查询用户信息,包含组织信息
	public Object getUserInfoById(UserDTO userDTO);
	
	// 根据用户Id更新个人信息
	public Object updateUserInfoById(UserDTO userDTO);
	
	// 获取我的排名中前几名
	public Object findTopRank(BaseTimeDTO baseTimeDTO);
	
	// 获取“我的排名”中登陆用户的排名
	public Object findeMyRank(BaseTimeDTO baseTimeDTO);
	
	// 获取“我的排名”中前几名及登陆用户的排名
	public Object findTopAndMyRank(BaseTimeDTO baseTimeDTO);
	
	// 获取我在支部排名中前几名
	public Object findTopRankInSubOrg(BaseTimeDTO baseTimeDTO);
	
	// 获取“我的排名”中登陆用户在支部中的排名
	public Object findeMyRankInSubOrg(BaseTimeDTO baseTimeDTO);
	
	// 获取“我的排名”中前几名及登陆用户在支部中的排名
	public Object findTopAndMyRankInSubOrg(BaseTimeDTO baseTimeDTO);
	
	// 获取“支部排名”阅读时间的前几名
	public Object findTopOrgRankByRead(BaseTimeDTO baseTimeDTO);
	
	// 获取“支部排名”中前几名及当前支部的排名
	public Object findTopAndMyRankByOrgRead(BaseTimeDTO baseTimeDTO);
	
	// “支部排名”--阅读时间 中登陆用户所在支部的排名
	public Object findeMyOrgRankByRead(BaseTimeDTO baseTimeDTO);
	
	// 根据userId 查询学分  日期倒序
	public Object findScoreDetailList(ScoreDetailDTO scoreDetailDTO,
			Integer currentPage, Integer pageSize);
	
	// 根据openId 查询用户是否关联微信
	public Object findWxRegByOpenId(WxInfo wxInfo);
	
	// 获取积分排名中前几名
	public Object findTopRankByScore(ScoreDetailDTO scoreDetailDTO);
	
	// “积分排名”中登陆用户的排名
	public Object findeMyRankByScore(ScoreDetailDTO scoreDetailDTO);
	
	// 获取“积分排名”中当前组织下所有用户排名及登陆用户的排名
	public Object findTopAndMyRankByScore(ScoreDetailDTO scoreDetailDTO);
	
	// 获取支部排名-积分排名中前几名
	public Object findTopRankByOrgScore(ScoreDetailDTO scoreDetailDTO);
	
	// “支部排名”积分排名中登陆用户所在支部的排名
	public Object findeMyRankByOrgScore(ScoreDetailDTO scoreDetailDTO);
	
	// 获取“支部排名”-积分排名中当前组织下所有支部排名及登陆用户所在支部的排名
	public Object findTopAndMyRankByOrgScore(ScoreDetailDTO scoreDetailDTO);
	
	// 获取用户在支部中排名-积分排名中前几名
	public Object findTopRankByScoreInSubOrg(ScoreDetailDTO scoreDetailDTO);
		
	// “支部排名”积分排名中登陆用户在支部中的排名
	public Object findeMyRankByScoreInSubOrg(ScoreDetailDTO scoreDetailDTO);
		
	// 获取“支部排名”-积分排名中当前组织下所有支部排名及登陆用户在支部中的排名
	public Object findTopAndMyRankByScoreInSubOrg(ScoreDetailDTO scoreDetailDTO);
	
	// 获取成绩排名中前几名
	public Object findTopRankByExam(ExamScoreDTO examScoreDTO);
		
	// “成绩排名”中登陆用户的排名
	public Object findeMyRankByExam(ExamScoreDTO examScoreDTO);
	
	// 获取“成绩排名”中当前组织下所有用户排名及登陆用户的排名
	public Object findTopAndMyRankByExam(ExamScoreDTO scoreDetailDTO);
	
	// 获取支部排名-成绩排名中前几名
	public Object findTopRankByOrgExam(ExamScoreDTO examScoreDTO);
		
	// “成绩排名”中登陆用户的排名
	public Object findeMyRankByOrgExam(ExamScoreDTO examScoreDTO);
	
	// 获取“成绩排名”中当前组织下所有用户排名及登陆用户的排名
	public Object findTopAndMyRankByOrgExam(ExamScoreDTO examScoreDTO);
	
	// 获取用户在支部中排名-成绩排名中前几名
	public Object findTopRankByExamInSubOrg(ExamScoreDTO examScoreDTO);
			
	// “成绩排名”中登陆用户在支部中的排名
	public Object findeMyRankByExamInSubOrg(ExamScoreDTO examScoreDTO);
		
	// 获取“成绩排名”中当前组织下所有用户排名及登陆用户在支部中的排名
	public Object findTopAndMyRankByExamInSubOrg(ExamScoreDTO examScoreDTO);
}
